/**
 *
 */
package com.kamm.springbootflower.utils;

import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 文件工具类
 * @author liandyao
 * @date 2017年10月12日 下午3:28:42
 * @version 1.0
 */
@Component
public class FileTools {

	static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");

	@Resource
	private Config config ;
	/**
	 * 需要保存的文件地址和文件
	 * @param path 传入的地址名称,例如,会员模块,传入的地址是member,也可以是member/2017/这样的多重文件夹
	 * @param file
	 * @return  地址字符串,注意,如果返回的是空,则说明没有选择上传文件
	 * @throws IOException
	 * @throws IllegalStateException
	 */
	public String saveFile(String path, MultipartFile file) throws IllegalStateException, IOException{

		String oriFileName = file.getOriginalFilename();//原文件名
		if(Tools.isEmpty(oriFileName)){
			return null ;
		}
		//得到后缀
		String hz = oriFileName.substring(oriFileName.lastIndexOf("."));
		//新文件名
		String newFileName = Tools.getTimeStamp()+"_"+Tools.getRandomString(8)+""+hz;

		String targetPath = config.getDir() ; //存储的目标地址
		if(Tools.isEmpty(targetPath)){ //如果配置的文件为空
			return "未配置文件存储文件夹";
		}
		path = path+"/"+sdf.format(new Date());//加上月份
		File fileNew=new File(targetPath+"/"+path);
		if(!fileNew.exists()){
			fileNew.mkdirs();//创建新的文件夹
		}


		String dataBasePath = path+"/"+newFileName;//数据库保存地址
		targetPath +="/"+dataBasePath;
		File targetFile = new File(targetPath);
		file.transferTo(targetFile);
		return config.getPath()+""+dataBasePath;
	}

	public static void main(String[] args) {
		String str="789.jkl.jpg";
		String hz = str.substring(str.lastIndexOf("."));
		System.out.println(hz);
	}
}
